let countVer = /^[0-9]+$/;      //验证数量正则表达式 --（只能输入数字）
let priceVer = /^[0-9]+(\.[0-9]{1,2})?$/;//验证价格正则表达式 --（只能输入数字并且可以有两位小数）
let goodsNameVer = /^[^\s]+$/;      //验证商品名称正则表达式 --（不能有空格）
let input = $("#myModal .modal-body :input");  //获取模态框所有input

/**
 * 验证表单内容是否为空
 * 输入框失去焦点、内容改变时触发此函数
 */
$(input).on("input blur propertychange", function () {
    if ($(this).val() != "") {
        $(this).parent().parent().removeClass('has-error');
        $(this).parent().parent().addClass('has-success');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-ok form-control-feedback");
        //内容不为空就绿色
    } else {
        $(this).parent().parent().removeClass('has-success');
        $(this).parent().parent().addClass('has-error');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-remove form-control-feedback");
        //内容为空就输入框变红
    }
});
/**
 * 商品名称验证
 */
$(input[1]).on("input blur propertychange", function () {
    if (goodsNameVer.test(input[1].value)) {
        $(this).parent().parent().removeClass('has-error');
        $(this).parent().parent().addClass('has-success');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-ok form-control-feedback");
    } else {
        $(this).parent().parent().removeClass('has-success');
        $(this).parent().parent().addClass('has-error');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-remove form-control-feedback");
    }
})
/**
 * 商品数量表单验证
 */
$(input[2]).on("input blur propertychange", function () {
    if (countVer.test(input[2].value)) {
        $(this).parent().parent().removeClass('has-error');
        $(this).parent().parent().addClass('has-success');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-ok form-control-feedback");
    } else {
        $(this).parent().parent().removeClass('has-success');
        $(this).parent().parent().addClass('has-error');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-remove form-control-feedback");
    }
})
/**
 * 商品价格验证
 */
$(input[5]).on("input blur propertychange", function () {
    if (priceVer.test(input[5].value)) {
        $(this).parent().parent().removeClass('has-error');
        $(this).parent().parent().addClass('has-success');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-ok form-control-feedback");
    } else {
        $(this).parent().parent().removeClass('has-success');
        $(this).parent().parent().addClass('has-error');
        $(this).next().removeClass("glyphicon-remove form-control-feedback");
        $(this).next().addClass("glyphicon glyphicon-remove form-control-feedback");
    }
})

/**
 * 分页查询
 * @param num    第几页
 * @param count 每页数据的数量
 */
let pageBean = new Object(); //向后台传递的对象
findPage(1, 5) //进入页面调用下方函数显示数据

function findPage(num, count) {
    pageBean.pageSize = count;      //每页显示几条数据
    if (num <= 1) {
        pageBean.pageNo = 1;        //如果传入的数据小于或等于1就显示第一页
    } else if (num >= Math.ceil($("#sum").text() / pageBean.pageSize)) {
        pageBean.pageNo = Math.ceil($("#sum").text() / pageBean.pageSize);//大于最大页数就为最大页数
    } else {
        pageBean.pageNo = num; //第几页
    }
    pageBean.factor = "";       //查询条件
    if ($("#shopId").val() != "" && $("#shopId").val().indexOf("'") >= 0 ? false : true) { //不能输入单引号，防止sql注入攻击
        pageBean.factor += " and goodsId like '%" + $("#shopId").val() + "%' "
    } else {
        pageBean.factor += " and 1 = 0 ";
    }
    if ($("#shopName").val() != "" && $("#shopName").val().indexOf("'") >= 0 ? false : true) { //不能输入单引号，防止sql注入攻击
        pageBean.factor += " and name like '%" + $("#shopName").val() + "%' ";
    } else {
        pageBean.factor += " and 1 = 0 ";

    }
//ajax获取数据显示在表格内
    $.post(
        "/goodsController/show",    //数据传到此url处理
        pageBean,                   //传到后台的数据
        function (data, status) {   //回调函数
            let goods = data.pageBeans.data;
            let unitList = data.unitList;       //商品单位数组

            if (status == "success") {      //判断状态为成功则执行下方语句
                $("#tb").empty();           //清空tbody
                let tr = "", status, type, unit //声明tr（tbody内数据）、status（商品状态）、type（商品类型）、unit（商品单位）
                //btn为下方导航栏 初始化向左翻页
                let btn = "<li><a href='javascript:findPage(pageBean.pageNo-1,pageBean.pageSize)' aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a></li>";
                //添加页数按钮
                for (let j = 0; j < data.pageBeans.totalPage; j++) {
                    btn += "<li><a href='#' onclick='findPage(this.innerText,pageBean.pageSize)'>" + (j + 1) + "</a></li>";
                }
                //向右翻页按钮
                btn += "<li><a href='javascript:findPage(pageBean.pageNo+1,pageBean.pageSize)' aria-label='Next'><span aria-hidden='true'>&raquo;</span></a></li>";
                //如果传回来的数据不为空就执行下方函数
                if (goods != null) {
                    for (let i = 0; i < goods.length; i++) {
                        //上下架按钮↓
                        if (goods[i].status != 1) {
                            status = "<button type='button' class='btn btn-xs btn-danger'>下架</button>";
                        } else {
                            status = "<button type='button' class='btn btn-xs btn-info'>在售</button>";
                        }
                        //商品类型↓
                        if (goods[i].type == 1) {
                            type = "普通商品";
                        } else {
                            type = "服务商品";
                        }
                        //商品单位↓
                        for (let j = 0; j < unitList.length; j++) {
                            if (unitList[j].id == goods[i].unitId) {
                                unit = unitList[j].name;
                                break;
                            }
                        }
                        //tbody内容↓
                        tr += "<tr><td>" + goods[i].goodsId + "</td><td>" + goods[i].name + "</td><td>" + goods[i].code + "</td><td>" + status + "</td><td>" + type + "</td><td>" + unit + "</td><td>" + goods[i].price.toFixed(2) + "</td><td> <button type='button' class='modify btn btn-info' data-toggle='modal' data-target='#myModal'>修改</button><button type='button' class='btn btn-danger' onclick='statu(this)' data-toggle='modal' data-target='.bs-example-modal-sm'>下架/上架</button></td></tr>";
                    }
                    $("#tb").html(tr);//tboby内容
                    $("#count").html(data.pageBeans.pageSize);//每页显示多少条数据
                    $("#sum").html(data.pageBeans.rowCount);//总共多少条记录
                    $("#start").html(data.pageBeans.startIndex + 1);//当前页从第几条记录开始
                    $("#end").html(data.pageBeans.startIndex + data.pageBeans.data.length);//到第几条记录结束
                    $("#ctn").html(btn);//导航条内容
                    $("#ctn li:contains(" + pageBean.pageNo + ")").addClass("active");//激活当前所在页数导航条按钮
                } else {
                    //如果传回的数据为空显示当前第0条到第0条
                    $("#tb").html(tr);
                    $("#count").html(data.pageBeans.pageSize);
                    $("#sum").html(data.pageBeans.rowCount);
                    $("#start").html(0);
                    $("#end").html(0);
                    $("#ctn").html(btn);
                    $("#ctn li:contains(" + pageBean.pageNo + ")").addClass("active");
                }
            }
        },
        "json"//传回来数据为json
    );
}


/**
 * 清空输入框状态 并且获取数据到输入框（ajax）
 */
$("#tb").on("click", ".modify", function () {
    $(".verification").removeClass("has-success has-error");
    $(".verification span").removeClass("glyphicon  glyphicon-ok glyphicon-remove");

    let input = $("#myModal .modal-body :input");
    let td = this.parentNode.parentNode.getElementsByTagName("td");

    //获取数据库数据到输入框
    $.post(
        "/goodsController/findId",
        {goodsId: td[0].innerText},
        function (data, status) {
            if (status == "success") {
                input[0].value = data.id;
                input[1].value = data.name;
                input[2].value = data.code;
                input[3].value = data.unitId;
                input[4].value = data.type;
                input[5].value = data.price;
                input[6].value = data.categoryId;
                input[7].value = data.goodsId;
                input[8].value = data.status;
            }
        },
        "json"
    );
    /**
     * 修改商品信息
     */
    $("#confirm").on("click", function () {
//判断输入内容是否正确
        if ((goodsNameVer.test(input[1].value)) && (countVer.test(input[2].value)) && (priceVer.test(input[5].value))) {
            $.post(
                "/goodsController/modify",
                $("#modifyShop").serialize(),
                function (data, status) {
                    if (data != -1 && status == "success") {
                        findPage(pageBean.pageNo, pageBean.pageSize);
                        // toastr.success("操作成功");
                        // td[0].innerText = input[7].value;
                        // td[1].innerText = input[1].value;
                        // td[2].innerText = input[2].value;
                        // if (input[4].value == 1) {
                        //     td[4].innerText = "普通商品";
                        // } else {
                        //     td[4].innerText = "服务商品";
                        // }
                        // $(input[3].children).each(function () {
                        //         if ($(this).val() == input[3].value) {
                        //             td[5].innerText = $(this).text();
                        //         }
                        //     }
                        // )
                        // td[6].innerText = data.price.toFixed(2);//价格可以有两位小数
                    } else {
                        toastr.error("操作失败");
                    }
                },
                "json"
            );
        } else {
            toastr.warning("请检查你输入的信息");
            return false;
        }


    });


});
/**
 *  如果关闭模态框就取消确认按钮绑定的单击事件
 */
$("#myModal").on("hide.bs.modal", function () {
    $("#confirm").off("click");
})

/**
 * 修改商品状态
 * @param a
 */
function statu(a) {
    let goods = new Object();
    goods.status = 1;
    goods.id = $(a).parent().parent().children("td")[0].innerText - 1000;
    if ($(a).parent().parent().children("td")[3].innerText == "下架") {
        goods.status = 1;
    } else {
        goods.status = 0;
    }
    /**
     * 确认按钮修改状态
     */
    $(".confirm").one("click", function () {
        $.post(
            "/goodsController/modify",
            goods,
            function (data, status) {
                if (status == "success") {
                    if (data != 1) {
                        $(a).parent().parent().children("td")[3].innerHTML = "<button type='button' class='btn btn-xs btn-danger'>下架</button>";
                    } else {
                        $(a).parent().parent().children("td")[3].innerHTML = "<button type='button' class='btn btn-xs btn-info'>在售</button>";
                    }
                    toastr.success("操作成功");
                }
            }
        );
    })
}

/**
 *  如果关闭模态框就取消确认按钮绑定的单击事件
 */
$(".bs-example-modal-sm").on("hide.bs.modal", function () {
    $(".confirm").off("click");
})

